package com.song.tools.generator.config;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * 生成器配置
 *
 * @author song tools
 * @since 2024-06-24
 */
@Data
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@Builder(toBuilder = true)
public class GeneratorConfig {

    /**
     * mysql连接信息配置
     */
    private MysqlConnectionConfig mysqlConnectionConfig;

    /**
     * 表名
     */
    private String tableName;

    /**
     * 作者
     */
    private String author;

    /**
     * 是否使用swagger
     */
    private Boolean enableSwagger = Boolean.FALSE;

    /**
     * 是否使用springdoc
     */
    private Boolean enableSpringDoc = Boolean.FALSE;

    /**
     * 项目目录
     */
    private String projectDir;

    /**
     * 父级包名
     */
    private String parent;

    /**
     * 模块名
     */
    private String moduleName;

    /**
     * 数据库名
     */
    private String dbName;

    /**
     *  数据库软删除字段
     */
    private String logicDeleteColumnName;

    /**
     * 表前缀
     */
    private List<String> tablePrefixList = Collections.emptyList();

    /**
     * 使用的模版
     */
    private String template;

    /**
     * 主键类型
     */
    private String primaryKeyType;

    /**
     * 主键名称
     */
    private String primaryKeyName;

    /**
     * 是否生成mapper中的批量插入方法
     */
    private Boolean insertBatchData;

    /**
     * 是否生成poiService的实现
     */
    private Boolean poiServiceImpl;

    /**
     * 枚举名称
     */
    private Map<String, String> enumNameMap = new LinkedHashMap<>();
}
